<?php namespace Common\Model; 

use Hdphp\Model\Model;

class Goods extends Model{
	//操作商品表
	protected $table = 'goods';
	//自动验证	
	protected $validate = array(
		array('gname','required','商品名称不能为空',3,3),
		array('listpic','required','列表图不能为空',3,3),
		array('album','required','商品图册不能为空',3,3),
		array('unit','required','商品单位不能为空',3,3),
		array('market_price','required','市场价不能为空',3,3),
	);
	
	//商品表中有些字段表单中没有 所以需要用到自动完成
	protected $auto = array(
		array('carriage_time','time','function',3,1),
		array('adminuser_uid','uid','method',3,1),
		array('listpic','uplistpic','method',3,3),
		array('indexpic','upindexpic','method',3,3),
	
	);
	//自定义uplistpic方法 
	public function uplistpic(){
		//把提交的listpic数组 转为字符串
		$listpicData = implode('|', Q('post.listpic'));
		//把字符串返回 就自动的加进商品表listpic字段
		return $listpicData;
	}
	
	//自定义uplistpic方法 
	public function upindexpic(){
		//把提交的listpic数组 转为字符串
		$indexpicData = implode('|', Q('post.indexpic'));
		//把字符串返回 就自动的加进商品表listpic字段
		return $indexpicData;
	}
	
	//自定义uid方法
	public function uid(){
		//返回登录的时候保存的$_SESSION['uid']
		return $_SESSION['uid'];
	}
	
	//添加数据方法
	public function addData(){
		//如果商品表的自动验证不通过 返回假
		if(!$this->create()) return false;
		//如果商品详细表验证不通过 这返回假并把错误压到当前模型
		//实例化商品详细模型
		$gdModel = new \Common\Model\GoodsDetail;
		if(!$gdModel->create()){
			$this->error = $gdModel->getError();
			return false;
		}
		$gdAttrModel = new \Common\Model\GoodsAttr;
//		if(!$gdAttrModel->create()){
//			$this->error = $gdAttrModel->getError();
//			return false;
//		}
		//验证通过后 添加数据到商品表 并返回一个商品ID
		$gid = $this->add();
		//把提交的相册数组专为字符串
		$albumData = implode('|', Q('post.album'));
		//组合数组 商品详细的数据
		$gdData = array(
			'album'=>$albumData,
			'goods_details'=>$_POST['goods_details'],
			'after_service'=>$_POST['after_service'],
			'size_info'=>$_POST['size_info'],
			'goods_gid'=>$gid
		);
		//添加数据到 商品详细表
		$gdModel->add($gdData);
		//遍历提交的attr数组
		if(Q('post.attr')){
			foreach (Q('post.attr') as $k => $v) {
			//组合数组 添加到商品属性表
			if($v == '0') continue;
			$gattrData = array(
			'gavalue'=>$v,
			'goods_gid'=>$gid,
			'type_attribute_taid'=>$k,
			);
			//判断商品属性是否选择了属性值 如果没选的话就不添加 以免产生无用数据
				$gdAttrModel->add($gattrData);
			}
		}
		//遍历spec数组 重组数组 添加进商品属性表
		if(Q('post.spec')){
			foreach (Q('post.spec') as $taid => $value) {
				foreach ($value['tavalue'] as $kk => $vv) {
					if($vv == '0')continue;
					$gspecData = array(
						'gavalue'=>$vv,
						'goods_gid'=>$gid,
						//共用$kk
						'add_price'=>$value['add_price'][$kk],
						'type_attribute_taid'=>$taid,
					);
					//判断商品规格是否选择了属性值  没有的话就不添加进商品属性表 以免产生无用的数据
						$gdAttrModel->add($gspecData);
				}
			}
		}
		//添加完数据后 返回真  供控制器判断 
		return true;
	}
	
	public function editData(){
		//如果商品模型自动验证不通过 返回假
		if(!$this->create()) return false;
		$gdModel = new \Common\Model\GoodsDetail;
		//如果商品详细模型自动验证不通过 返回假 并把具体错误压到当前模型
		if(!$gdModel->create()){
			$this->error = $gdModel->getError();
			return false;
		}
		$gdAttrModel = new \Common\Model\GoodsAttr;
		//post数据后把数据表保存到商品表
		$this->save();
		//取得提交的gid  用于删除旧的商品属性和商品详细
		$gid= Q('post.gid');
		//删除旧的商品详细
		$gdModel->where("goods_gid={$gid}")->delete();
		//删除旧的商品属性
		$gdAttrModel->where("goods_gid={$gid}")->delete();
		//把提交的album 商品图册数组专为字符串
		$albumData = implode('|', Q('post.album'));
		//组合数组 添加进商品详细表
		$gdData = array(
			'album'=>$albumData,
			'goods_details'=>Q('post.goods_details',''),
			'after_service'=>Q('post.after_service',''),
			'size_info'=>Q('post.size_info',''),
			'goods_gid'=>$gid
		);
		//添加数组数据进商品详细表
		$gdModel->add($gdData);
		//遍历提交的attr数组 重组数组 添加到商品属性表
		if(Q('post.attr')){
			foreach (Q('post.attr') as $k => $v) {
				//判断是否无用的数据  商品属性不选属性值的话 会产生无用的数据
				if($v == '0') continue;
				$gattrData = array(
				'gavalue'=>$v,
				'goods_gid'=>$gid,
				'type_attribute_taid'=>$k,
				);
					$gdAttrModel->add($gattrData);
			}
		}
		//遍历spec数组  重组数组
		if(Q('post.spec')){
			foreach (Q('post.spec') as $taid => $value) {
				foreach ($value['tavalue'] as $kk => $vv) {
					//判断是否无用的数据  商品规格不选属性值的话 会产生无用的数据
					if($vv == '0')continue;
					$gspecData = array(
						'gavalue'=>$vv,
						'goods_gid'=>$gid,
						'add_price'=>$value['add_price'][$kk],
						'type_attribute_taid'=>$taid,
					);
						$gdAttrModel->add($gspecData);
				}
			}
		}
		return true;
	}
	
}



 ?>